import { CSSProperties, VNodeChild } from 'vue'
import { createTypes, VueTypeValidableDef, VueTypesInterface } from 'vue-types'

export type VueNode = VNodeChild | JSX.Element

type PropTypes = VueTypesInterface & {
  readonly style: VueTypeValidableDef<CSSProperties>
  readonly VNodeChild: VueTypeValidableDef<VueNode>
}

const propTypes = createTypes( {
  func : undefined,
  bool : undefined,
  string : undefined,
  number : undefined,
  object : undefined,
  integer : undefined
} ) as PropTypes

propTypes.extend( [
  {
    name : 'style',
    getter : true,
    type : [String, Object],
    default : undefined
  },
  {
    name : 'VNodeChild',
    getter : true,
    type : undefined
  }
] )

export { propTypes }
